#region License
// Copyright (c) 2007 James Newton-King
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
#endregion

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using Utilities.Miscellaneous;
using Utilities.Testing;

namespace Utilities.Test.Miscellaneous
{
  public class DateTimeUtilsFixture : TestFixtureBase
  {
    [Test]
    public void ToSqlServerPrecision()
    {
      DateTime initial = new DateTime(633158641685161819);

      DateTime after = DateTimeUtils.ToSqlServerPrecision(initial);

      DateTime expected = new DateTime(633158641685170000);

      Assert.AreEqual(expected, after);
    }

    [Test]
    public void FileSortableDateTime()
    {
      DateTime date;
      string dateText;

      date = new DateTime(1, 1, 1);
      dateText = DateTimeUtils.ToFileSortableDateTime(date);
      Assert.AreEqual("00010101T000000", dateText);
      Assert.AreEqual(date, DateTimeUtils.FromFileSortableDateTime(dateText));

      date = new DateTime(2006, 11, 30, 20, 59, 55, 500);
      dateText = DateTimeUtils.ToFileSortableDateTime(date);
      Assert.AreEqual("20061130T205955", dateText);
      Assert.AreEqual(date.Subtract(TimeSpan.FromMilliseconds(500)), DateTimeUtils.FromFileSortableDateTime(dateText));
    }
  }
}
